package com.grass.cropTradingCenter.common;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.grass.cropTradingCenter.utils.CollectionUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.http.HttpStatus;

import java.util.Collections;
import java.util.List;

@Data
public class PageResult<T>{
    @ApiModelProperty("总记录数")
    private long total;

    @ApiModelProperty("列表数据")
    private List<T> rows;

    @ApiModelProperty("消息状态码")
    private int code;

    @ApiModelProperty("消息内容")
    private String msg;

    public static <T> PageResult<T> ofPage(Page<T> page) {
        PageResult<T> rspData = new PageResult<T>();
        rspData.setCode(200);
        rspData.setMsg("查询成功");
        rspData.setRows(page.getRecords());
        rspData.setTotal(page.getTotal());
        return rspData;
    }

    /**
     * 分页
     *
     * @param sortedAll
     * @param pageIndex
     * @param pageSize
     * @param <T>
     * @return
     */
    public static <T> PageResult<T> ofList(List<T> sortedAll, int pageIndex, int pageSize) {
        PageResult<T> rspData = new PageResult<T>();
        rspData.setCode(HttpStatus.OK.value());
        rspData.setMsg("查询成功");
        rspData.setRows(CollectionUtils.page(sortedAll, pageIndex, pageSize));
        rspData.setTotal(sortedAll.size());
        return rspData;
    }

    /**
     * 空列表
     *
     * @param <T>
     * @return
     */
    public static <T> PageResult<T> empty() {
        PageResult<T> rspData = new PageResult<>();
        rspData.setCode(HttpStatus.OK.value());
        rspData.setMsg("查询成功");
        rspData.setRows(Collections.emptyList());
        rspData.setTotal(0);
        return rspData;
    }
}
